home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 June: Reference Library / Dev.CD Jun 99 RL Disk 1.toast / Technical Documentation / Develop / Additional Articles / Developing Symbiotic Apps / Symbiotic Samples / Symbiotic client source / Trident.cw10_pp / CTridentuptimeView.cp < prev    next >
Encoding:
Text File  |  1996-10-09  |  6.5 KB  |  278 lines  |  [TEXT/CWIE]

  1. // ===========================================================================
  2. //    CTridentuptimeView.cp                        ©1993 Metrowerks Inc. All rights reserved.
  3. // ===========================================================================
  4. //
  5. //    A View for demonstrating large Image sizes
  6. //
  7. //    View draws the vertical Image coordinate at 20 pixel intervals.
  8. //
  9. //    Clicking, holding, and dragging the mouse outside the View's frame
  10. //    autoscrolls the View
  11.  
  12. #include "CTridentuptimeView.h"
  13. #include "CTridentApp.h"
  14. #include "CTridentCmds.h"
  15. #include "TridentAESuite.h"
  16. #include <LStream.h>
  17.  
  18. #ifndef __TOOLUTILS__
  19. #include <ToolUtils.h>
  20. #endif
  21.  
  22. CTridentuptimeView*
  23. CTridentuptimeView::CreateTridentViewStreamB(
  24.     LStream    *inStream)
  25. {
  26.     return (new CTridentuptimeView(inStream));
  27. }
  28.  
  29. CTridentuptimeView::CTridentuptimeView(
  30.     LStream    *inStream)
  31.             : CTridentView(inStream)
  32. {
  33.     this->fInterval = 30;
  34. }
  35.  
  36. CTridentuptimeView::CTridentuptimeView()
  37. {
  38.     this->fInterval = 30;
  39. }
  40.  
  41. CTridentuptimeView::~CTridentuptimeView()
  42. {
  43. }
  44.  
  45.  
  46. Boolean
  47. CTridentuptimeView::DoSomethingWillYa(
  48.     CommandT    inCommand,
  49.     void        *ioParam)
  50. {
  51.     OSErr err;
  52.     long theInterval = 10;
  53.     Boolean        cmdHandled = FALSE;
  54.     AppleEvent    intervalappleEvent, replyEvent;
  55.  
  56.     if ((inCommand > 419) && (inCommand < 426))
  57.         {
  58.         AEAddressDesc& theAddress = ((CTridentWindow*) mSuperView)->fAEAddressDesc;
  59.         err = AECreateAppleEvent(kAEAUXSuite, kAEInterval, &theAddress, kAutoGenerateReturnID, kAnyTransactionID, &intervalappleEvent);
  60.         err = ::AECreateDesc(typeNull, NULL, 0, &replyEvent);
  61.         }
  62.     switch (inCommand) {
  63.     
  64.         // Return menu item status according to command messages.
  65.         // Any that you don't handle will be passed to LApplication
  66.  
  67.         case 420:
  68.             theInterval = 5;
  69.             break;
  70.  
  71.         case 421:
  72.             theInterval = 10;
  73.             break;
  74.  
  75.         case 422:
  76.             theInterval = 30;
  77.             break;
  78.  
  79.         case 423:
  80.             theInterval = 60;
  81.             break;
  82.         case 424:
  83.             theInterval = 600;
  84.             break;
  85.         case 425:
  86.             theInterval = 6000;
  87.             break;
  88.         default:
  89. //            cmdHandled = inherited::DoSomethingWillYa(inCommand, ioParam);
  90.             break;
  91.  
  92.     }
  93.     if ((inCommand > 419) && (inCommand < 426))
  94.         {
  95.         err = ::AEPutParamPtr(&intervalappleEvent, keyInterval,typeLongInteger,(Ptr)&theInterval,sizeof(long));            
  96.         UAppleEventsMgr::SendAppleEventWithReply(intervalappleEvent, replyEvent, TRUE);
  97.         cmdHandled = TRUE;
  98.         }
  99.     return cmdHandled;
  100. }
  101.  
  102. void
  103. CTridentuptimeView::HandleAppleEvent(
  104.     const AppleEvent    &inAppleEvent,
  105.     AppleEvent            &outAEReply,
  106.     AEDesc                &outResult,
  107.     long                inAENumber)
  108. {
  109.     OSErr err;
  110.     LStr255 theText = "this is a test";
  111.     char string[1024];
  112.     DescType actualCode;
  113.     long actualSize;
  114.  
  115.     switch (inAENumber) {
  116.     
  117.         case ae_Close:
  118.             SysBeep(3);
  119.             break;
  120.         case kAEJavMsg:
  121.         case keyMessageCode:
  122.         case 408:
  123.             this->ResetTicks();
  124.             err = ::AEGetParamPtr(&inAppleEvent, keyMsgString, typeChar, &actualCode,  &string, 1024, &actualSize);
  125.             if (err != noErr)
  126.                 theText = "Got Chunks from the Host";
  127.             else
  128.                 {
  129.                 string[actualSize-1] = NULL;
  130.                 
  131.                 for (char* ptr = string; *ptr != NULL; ptr++)
  132.                 if (*ptr == '\r')
  133.                     *ptr = '\n';
  134.                     
  135.                 theText = string;
  136.                 }
  137.  
  138.             ListHandle theList = this->GetMacListH();
  139.             LAddRow(1,0, theList);
  140.             Cell    theSelection = {0, 0};
  141.             this->SelectOneCell(theSelection);
  142.             this->SetDescriptor(theText);
  143.             ::LSetSelect(FALSE, theSelection, theList);
  144.             Int16    numRows = (**theList).dataBounds.bottom - 1;
  145.             if (numRows >100)
  146.                 LDelRow(100-numRows, 100, theList);
  147.  
  148.             break;
  149.         default:
  150.  
  151.             inherited::HandleAppleEvent(inAppleEvent, outAEReply,
  152.                                 outResult, inAENumber);
  153.             break;
  154.         }
  155.  
  156. }
  157. void
  158. CTridentuptimeView::FindCommandStatus(
  159.     CommandT    inCommand,
  160.     Boolean        &outEnabled,
  161.     Boolean        &outUsesMark,
  162.     Char16        &outMark,
  163.     Str255        outName)
  164. {
  165.     outMark = 18;
  166.     switch (inCommand) {
  167.     
  168.         // Return menu item status according to command messages.
  169.         // Any that you don't handle will be passed to LApplication
  170.         case 421:
  171.             outEnabled = TRUE; 
  172.             outMark = (this->fInterval == 10)?18:NULL;
  173.             outUsesMark = TRUE; 
  174.             break;
  175.         case 422:
  176.             outEnabled = TRUE;  
  177.             outMark = (this->fInterval == 30)?18:NULL;
  178.             outUsesMark = TRUE; 
  179.             break;
  180.         case 423:
  181.             outEnabled = TRUE;  
  182.             outMark = (this->fInterval == 60)?18:NULL;
  183.             outUsesMark = TRUE;
  184.             break;
  185.         case 424:
  186.             outEnabled = TRUE;  
  187.             outMark = (this->fInterval == 600)?18:NULL;
  188.             outUsesMark = TRUE;  
  189.             break;
  190.         case 425:
  191.             outEnabled = TRUE;  
  192.             outMark = (this->fInterval == 3600)?18:NULL;
  193.             outUsesMark = TRUE;  
  194.             break;
  195.         default:
  196.             inherited::FindCommandStatus(inCommand, outEnabled,
  197.                                     outUsesMark, outMark, outName);
  198.             break;
  199.         }
  200. }
  201.  
  202. void CTridentuptimeView::SendInterval(long seconds) 
  203. {
  204.     DescType actualCode;
  205.     long actualSize;
  206.     long clientSessionID = (long) ((CTridentWindow*) mSuperView)->fPortRefNum;
  207.     AEAddressDesc& theAddress = ((CTridentWindow*) mSuperView)->fAEAddressDesc;
  208.     MenuHandle theMenu = GetMenu(132);
  209.     switch(this->fInterval)
  210.     {
  211.         case 10:
  212.             CheckItem(theMenu, 1, FALSE);                
  213.             break;
  214.         case 30:
  215.             CheckItem(theMenu, 2, FALSE);                
  216.             break;
  217.         case 60:
  218.             CheckItem(theMenu, 3, FALSE);                
  219.             break;
  220.         case 600:
  221.             CheckItem(theMenu, 4, FALSE);                
  222.             break;
  223.         case 3600:
  224.             CheckItem(theMenu, 5, FALSE);                
  225.             break;
  226.         default:
  227.         {}
  228.         break;
  229.     }
  230.     this->fInterval = seconds;
  231.     switch(seconds)
  232.     {
  233.         case 10:
  234.             CheckItem(theMenu, 1, TRUE);                
  235.             break;
  236.         case 30:
  237.             CheckItem(theMenu, 2, TRUE);                
  238.             break;
  239.         case 60:
  240.             CheckItem(theMenu, 3, TRUE);                
  241.             break;
  242.         case 600:
  243.             CheckItem(theMenu, 4, TRUE);                
  244.             break;
  245.         case 3600:
  246.             CheckItem(theMenu, 5, TRUE);                
  247.             break;
  248.         default:
  249.         {}
  250.         break;
  251.     }
  252.     AppleEvent    intervalappleEvent, reply3Event;
  253.     OSErr err = AECreateAppleEvent(kAEAUXSuite, kAEInterval, &theAddress, kAutoGenerateReturnID, kAnyTransactionID, &intervalappleEvent);
  254.     err = ::AECreateDesc(typeNull, NULL, 0, &reply3Event);
  255.     err = ::AEPutParamPtr(&intervalappleEvent, keyInterval,typeLongInteger,(Ptr)&seconds, sizeof(long));            
  256.     err = ::AEPutParamPtr(&intervalappleEvent, 'ssID',typeLongInteger,(Ptr)&clientSessionID,sizeof(long));            
  257.     UAppleEventsMgr::SendAppleEventWithReply(intervalappleEvent, reply3Event, TRUE);
  258.  
  259.     LStr255    theText;
  260.     char status[1];
  261.     if (&reply3Event != nil) {
  262.         err = ::AEGetParamPtr(&reply3Event, keyErrorNumber, typeChar, &actualCode,  (Ptr)status, sizeof(char), &actualSize);
  263.         err = noErr;
  264.         if (*status == 'S')
  265.             {
  266.             err = ::AEGetParamPtr(&reply3Event, keyAEVersion, typeChar, &actualCode,  &theText, 10, &actualSize);
  267.             if (err != noErr)
  268.                 theText = "bad version non - success";
  269.             //LListBox* myListBox = (LListBox*) this->FindPaneByID('winb');
  270.             //if (myListBox != NULL)   //this!
  271.                 this->SetDescriptor(theText);
  272.             }
  273.         AEDisposeDesc(&reply3Event);
  274.     }
  275.     AEDisposeDesc(&intervalappleEvent);
  276.  
  277. }
  278.